package com.fw.cost.producer.service.researchCost;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fw.cost.model.entity.researchCost.ResearchProjCostSummaryModel;
import com.fw.cost.model.form.BussResultForm;
import com.fw.cost.model.form.basic.*;
import com.fw.cost.model.metadata.ApiPageResult;
import com.fw.cost.model.vo.costCollection.AnalyzeImportResultVo;

/**
* <b><code></code></b>
* <p/>
*
*  科研项目成本汇总表
*
* <p/>
* <b>Creation Time:</b> 2024/09/27 09:11:36
*
* @author 
* @version ${classInfo.version}
*/
public interface IResearchProjCostSummaryService extends IService<ResearchProjCostSummaryModel> {
    /**
    * 获取 科研项目成本汇总表列表
    *
    * @param queryForm
    * @return com.fw.cost.model.metadata.ApiPageResult
    * @Date 2024/09/27 09:11:36
    * @since ${classInfo.version}
    */
    ApiPageResult getResearchProjCostSummaryList(ResearchProjCostSummaryQueryForm queryForm);

    /**
    * 新增、更新 科研项目成本汇总表
    *
    * @param addForm
    * @return void
    * @Date 2024/09/27 09:11:36
    * @since ${classInfo.version}
    */
    void addOrUpdateResearchProjCostSummary(ResearchProjCostSummaryAddForm addForm);

    /**
    * 通过主键ID列表删除
    *
    * @param idList
    * @param period
    * @return void
    * @Date 2024/09/27 09:11:36
    * @since ${classInfo.version}
    */
    void delByResearchProjCostSummaryList(List<String> idList, String period);

    /**
    * 导入分析
    *
    * @param basicImportForm
    * @param importList
    * @return AnalyzeImportResultVo
    * @Date 2024/09/27 09:11:36
    * @since ${classInfo.version}
    */
    AnalyzeImportResultVo importAnalysis(BasicImportForm basicImportForm, List<ResearchProjCostSummaryImportExcelForm> importList);

    /**
    *  导入 科研项目成本汇总表
    *
    * @param basicImportForm
    * @param importList
    * @return void
    * @Date 2024/09/27 09:11:36
    * @since ${classInfo.version}
    */
    void importResearchProjCostSummary(BasicImportForm basicImportForm, List<ResearchProjCostSummaryImportExcelForm> importList);

    /**
    * 根据会计期间获取 科研项目成本汇总表信息
    *
    * @param queryForm
    * @return List<ResearchProjCostSummaryModel>
    * @Date 2024/09/27 09:11:36
    * @since ${classInfo.version}
    */
    List<ResearchProjCostSummaryModel> getListByPeriod(ResearchProjCostSummaryQueryForm queryForm);

    /**
    * 检查上一个周期的会计周期
    *
    * @param basicCopyPreviousPeriodForm
    * @return BussResultForm
    * @Date 2024/09/27 09:11:36
    * @since ${classInfo.version}
    */
    BussResultForm checkCopyLastFiscalYearData(BasicCopyPreviousPeriodForm basicCopyPreviousPeriodForm);

    /**
    *  复制上一个会计周期
    *
    * @param basicCopyPreviousPeriodForm
    * @return void
    * @Date 2024/09/27 09:11:36
    * @since ${classInfo.version}
    */
    void copyPreviousPeriod(BasicCopyPreviousPeriodForm basicCopyPreviousPeriodForm); 
}
